iT邦幫忙

2023 iThome 鐵人賽

DAY 7
0
Software Development

LeetCode-30 Days of JavaScript系列 第 7

LeetCode JS30-Day07 | 陣列 Array.reduce() - 2626. Array Reduce Transformation

  • 分享至 

  • xImage
  •  

Day07 - 2626. Array Reduce Transformation EASY

Description❓

Given an integer array nums, a reducer function fn, and an initial value init, return a reduced array.
A reduced array is created by applying the following operation: val = fn(init, nums[0]), val = fn(val, nums[1]), val = fn(val, nums[2]), ... until every element in the array has been processed. The final value of val is returned.
If the length of the array is 0, it should return init.

Please solve it without using the built-in Array.reduce method.

接受參數 整數陣列nums、歸約函數fn、初始值init,並返回一個歸約陣列。
通過操作創建歸約陣列:val = fn(init, nums[0]), val = fn(val, nums[1]), val = fn(val, nums[2]), ... 直到陣列中的每個元素都被處理完畢。返回 val 的最終值。
如果陣列長度為 0,則返回 init。

請在沒有使用Array.reducer()的情況下解決這個問題。

Points

Solution✍️

[ ▶️挑戰這一題 ][ 本日代碼 ]

  1. 題目需要我們設計一個帶入整數陣列和累加函式(歸約函式),不使用Array.reduce(),返回轉換後陣列的函式。
  • 如果數組的長度為 0,則應返回 init。
  • 宣告val作為當前累加的值,也是最後需要return的值,在一開始當前累加的值會是init。
const reduce = (nums, fn, init) => {
   if (nums.length == 0) {return init;};
   let val = init;

   //...累加邏輯

   return val;
}
  1. 使用for迴圈 讓當前累加值 與遍歷的陣列元素的值加總 val = fn(val, nums[i]);
  • 假設 nums=[1,4,5,7]; 那迴圈就會是 init的0+1,val=1;1+4,val=5,5+5,val=10 ...類推。
  • 遍歷結束後返回val的值。
const reduce = (nums, fn, init) => {
   if (nums.length == 0) {return init;};
   let val = init;

   for (let i = 0; i < nums.length; i++) {
      val = fn(val, nums[i]);
   }

   return val;
}

Testcase

let nums1 = [1,2,3,4]
function sum1(accum, curr) { return accum + curr; }
let init1 = 0
console.log(reduce(nums1,sum1,init1));
let nums2 = [1,2,3,4]
function sum2(accum, curr) { return accum + curr * curr; }
let init2 = 100
console.log(reduce(nums2,sum2,init2));
let nums3 = []
function sum3(accum, curr) { return 0; }
let init3 = 25
console.log(reduce(nums3,sum3,init3));

上一篇
LeetCode JS30-Day06 | 陣列 Array.filter() - 2634. Filter Elements from Array
下一篇
LeetCode JS30-Day08 | 組合函式 2629. Function Composition
系列文
LeetCode-30 Days of JavaScript30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言